<?php

/*
 * 常用函数库
 * @author kane
 */

require DATA_PATH . '/conf/config.php';

/* 获取配置值 */

function KC($name) {
    global $conf;
    if (!$conf[$name]) {
        return;
    } else {
        return $conf[$name];
    }
}

/*
 * 获取语言包提示信息
 * @param $key string 提示信息变量
 */

function KL($key) {
    global $langs;
    if (!empty($langs[$key])) {
        $res = $langs[$key];
    } else {
        $res = '';
    }
    return $res;
}

/*
 * 处理错误提示
 */

function Kerror($msg) {
    $msg = empty($msg) ? KL('visit_error') : $msg;
    $html = "<html><head><title>error</title>
    <meta http-equiv='content-type' content='text/html;charset=utf-8'>
        <style>
            .main{width:100%;height:100px;border:1px solid #E43734;background-color:#FDF6E6;padding-left:20px;}
            .main h3{font-family:微软雅黑;color:#A12004;}
            .main p{}
        </style>
        </head><body>
        <div class='main'><h3>错误!</h3>
        <p>{$msg}</p>
        </div>
        </body></html>";
    if (KC('debug_model')) {
        echo $html;
    } else {
        header('Location: http://k1029.com');
    }
}

/*
 * 实例化控制器
 * @params $name string  控制器类名
 */

function KA($name) {
    $ext = ".class.php";
    $file = ACTION_PATH . "/" . $name . "Action" . $ext;
    if (is_file($file)) {
        require_once ($file);
    } else {
        Kerror(KL('module_no_exist'));
    }
    $class = basename($name . 'Action');
    if (class_exists($class, false)) {
        $action = new $class();
        return $action;
    } else {
        return false;
    }
}

/*
 * 实例化Model
 * @params $name string  
 */

function KM($name) {
    $ext = ".class.php";
    $file = MODEL_PATH . "/" . $name . "Model" . $ext;
    if (is_file($file)) {
        require_once ($file);
    } else {
        Kerror(KL('model_no_exist'));
    }
    $class = basename($name . 'Model');
    if (class_exists($class, false)) {
        $model = new $class();
        return $model;
    } else {
        return false;
    }
}

/*
 * 远程调用模块方法
 * @params $url string 格式   控制器/操作名 
 * @params $vars array 参数
 */

function KR($url, $vars=array()) {
    $info = pathinfo($url);
    $action = $info['basename']; //操作名
    $module = $info['dirname']; //控制器类名
    $class = KA($module);
    if ($class)
        return call_user_func_array(array(&$class, $action), $vars);
    else
        return false;
}

/*
 * 生成URL
 * @params $url string 格式   控制器/操作名 
 * @params $vars array 参数 
 * todo 完善适合多种URL格式
 */

function KU($urls, $vars=array()) {
    $url = $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'];
    $info = pathinfo($urls);
    $module = $info['dirname']; //控制器类名
    $action = $info['basename']; //操作名
    if (!empty($module)) {
        $url.="?" . KC('var_module') . "=" . $module;
        if (!empty($action)) {
            $url.="&" . KC('var_action') . "=" . $action;
            if (!empty($vars)) {
                foreach ($vars as $k => $v) {
                    $url.="&" . $k . "=" . $v;
                }
            }
            $res = $url;
        } else {
            $res = false;
        }
    } else {
        $res = false;
    }
    return $res;
}

?>